<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of presupuestoClass
 *
 * @author Diseño-2
 */
class presupuestoClass {

    public function listadoPresupuestos()
    {
        $listaPresupuestos=PresupuestoPeer::doSelect(new Criteria());
      return $listaPresupuestos;

    }
    
    public function grabar($arrayParametros)
    {
         $arrayRespuesta =  array("success"=>false,"mensaje"=>"Error al grabar Detalle","objecto"=>null,"code"=>602);

         try 
         {
             $version     = $this->buscarPresupuesto($arrayParametros['presupuesto']);             
             $this->insertarPresupuesto($arrayParametros, $version);
         } 
         catch (Exception $e)
         {             
            Propel::close();
            $arrayRespuesta['mensaje'] = $e->getMessage();
            $arrayRespuesta['code']    = 601;
            return $arrayRespuesta;
         }
         return $arrayRespuesta;
    }
    
    public function editarPresupuesto($arrayParametros)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"Error al grabar Agencia","objecto"=>null,"code"=>602);
        try 
        {
               $presupuesto = $this->getPresupuesto($arrayParametros['idPresupuesto']);
               if(is_object($presupuesto))
               {
                   
                   $presupuesto->setNumeroPresupuesto($arrayParametros['presupuesto']);
                   $presupuesto->setClienteId($arrayParametros['cliente']);
                   $presupuesto->setProductoId($arrayParametros['producto']);
                   $presupuesto->setCampanaId($arrayParametros['campana']);
                   $presupuesto->setNumeroOrden($arrayParametros['numeroOrden']);
                   $presupuesto->setMes($arrayParametros['mes']);
                   $presupuesto->setMoneda($arrayParametros['moneda']);
                   $presupuesto->setTipocambio($arrayParametros['tipoCambio']);
                  
                   $presupuesto->save();
                   $arrayRespuesta['success'] = true;
                   $arrayRespuesta['mensaje']  = "Exito";
               }


        } catch (Exception $e)
        {
            print_r($arrayParametros['producto'].'--'.$e->getMessage());
           $arrayRespuesta['mensaje'] = $e->getMessage();
           $arrayRespuesta['code']    = 601;
           return $arrayRespuesta;
        }
        return $arrayRespuesta;     
    }
    
    public function versionarPresupuesto($arrayParametros)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"Error al grabar Agencia","objecto"=>null,"code"=>602);
        try 
        {
               $presupuesto = $this->getPresupuesto($arrayParametros['idPresupuesto']);
               if(is_object($presupuesto))
               {
                   $version = $this->buscarPresupuesto($arrayParametros['presupuesto']);
               
                   $this->insertarPresupuesto($arrayParametros, $version);                   
                   $arrayRespuesta['success'] = true;
                   $arrayRespuesta['mensaje']  = "Exito";
               }


        } catch (Exception $e)
        {
            print_r($arrayParametros['producto'].'--'.$e->getMessage());
           $arrayRespuesta['mensaje'] = $e->getMessage();
           $arrayRespuesta['code']    = 601;
           return $arrayRespuesta;
        }
        return $arrayRespuesta;     
    }
    
    public function getPresupuesto($idpresupuesto,$tipoBusqueda="id")
    {
        $presupuestoBean = null;
        if($tipoBusqueda=="id")
        {
              $presupuestoBean = PresupuestoPeer::retrieveByPK($idpresupuesto);
        }
        return $presupuestoBean;
    }
    
    function buscarPresupuesto($numeroPresupuesto)
    {    
        $criteria= new Criteria();
        $criteria->add(PresupuestoPeer::NUMERO_PRESUPUESTO,$numeroPresupuesto);
        $numeroVersion=PresupuestoPeer::doCount($criteria);
        $version=$numeroVersion+1;
        return  $version;
    }
    
    function insertarPresupuesto( $arrayParametros, $version)
    {
       
        try 
        {
        $presupuesto = new Presupuesto();
        $presupuesto->setNumeroPresupuesto($arrayParametros['presupuesto']);
        $presupuesto->setClienteId($arrayParametros['cliente']);
        $presupuesto->setProductoId($arrayParametros['producto']);
        $presupuesto->setCampanaId($arrayParametros['campana']);
        $presupuesto->setNumeroOrden($arrayParametros['numeroOrden']);
        $presupuesto->setMes($arrayParametros['mes']);
        $presupuesto->setMoneda($arrayParametros['moneda']);
        $presupuesto->setTipocambio($arrayParametros['tipoCambio']);
        $presupuesto->setUsuarioId(1);
        $presupuesto->setEstado(1);
        $presupuesto->setVesion($version);
        $presupuesto->save();
        
        
        $this->grabarDetalleFormatoPublicitario('s_detalleFormatoPublicitario', $presupuesto->getId());
        
        
        } catch (Exception $e)
        {
           print_r($e->getMessage());
        }
    }


    public function generarNumeroPresupuesto($idProducto)
    {

        $nuevoCodigo = 1;

        $criteria = new Criteria();
        $criteria->addDescendingOrderByColumn(PresupuestoPeer::ID);
       $criteria->add(PresupuestoPeer::PRODUCTO_ID,$idProducto);
        $cantidad = PresupuestoPeer::doCount($criteria);


         /*descomponer eñ codigo del producto*/
      
            $nuevoCodigo = $cantidad+1;
       

       

        $producto = ProductoPeer::retrieveByPK($idProducto);


        $codigoAgencia =   sprintf("%02d", $producto->getAgenciaId());
        $codigoProducto =  sprintf("%03d", $producto->getCodigo());
        $codigoPresupuesto = sprintf("%03d", $nuevoCodigo);

        $nuevoCodigo = $codigoAgencia.'-'.$codigoProducto.'-'.$codigoPresupuesto;


        return $nuevoCodigo;
    }
    
       public function obtenerPresupuesto($idPresupuesto)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"Agencia no encontrado","objecto"=>null,"code"=>601);
        $presupuestoBean=PresupuestoPeer::retrieveByPK($idPresupuesto);
        if(is_object($presupuestoBean))
            {
            $arrayRespuesta['success'] = true;
            $arrayRespuesta['mensaje'] = "exito";
            $arrayRespuesta['objecto'] = $presupuestoBean;


            }
              return $arrayRespuesta;

    }
    
    public function obtenerPresupuestoxNumero($numeroPresupuesto)
    {
        $arrayRespuesta =  array("success"=>false,"mensaje"=>"Agencia no encontrado","objecto"=>null,"code"=>601);
        $criteria = new Criteria();
        $criteria->add(PresupuestoPeer::NUMERO_PRESUPUESTO, $numeroPresupuesto);
        $criteria->addDescendingOrderByColumn(PresupuestoPeer::VESION);
        $presupuestoBean=PresupuestoPeer::doSelectOne($criteria);
        if(is_object($presupuestoBean))
            {
            $arrayRespuesta['success'] = true;
            $arrayRespuesta['mensaje'] = "exito";
            $arrayRespuesta['objecto'] = $presupuestoBean;


            }
              return $arrayRespuesta;

    }
    
    
    public function buscarContrato($productoId,$proovedorId)
    {
        $criteria = new Criteria();
        $criteria->add(ContratoProductoPeer::PROVEEDOR_ID,$proovedorId);
        $criteria->add(ContratoProductoPeer::ID_PRODUCTO,$productoId);
        return ContratoProductoPeer::doSelect($criteria);
    }
    
    public function buscarMedio($proovedorId)
    {
        $criteria = new Criteria();
        $criteria->add(MediosProveedorPeer::PROVEEDOR_ID,$proovedorId);
        return MediosProveedorPeer::doSelect($criteria);
    }
    
    
    /************************Metodos detalle*******************************/
    public function agregarDetalleFormatoPublicitario($nombreSession,$arrayParametro,$type="crear")
    {
       
        $proveedorId     = $arrayParametro['proveedorId'];
        $contratoId      = $arrayParametro['contratoId'];
        $saldo           = $arrayParametro['saldo'];
        $medioId         = $arrayParametro['medioId'];
        $formato         = $arrayParametro['formato'];
        $tipoCompraId    = $arrayParametro['tipoCompraId'];
        $fechaInicio     = $arrayParametro['fechaInicio'];
        $fechaFin        = $arrayParametro['fechaFin'];
        $inventario      = $arrayParametro['inventario'];
        $costoCmp        = $arrayParametro['costoCmp'];
        $cpc             = $arrayParametro['cpc'];
        $descuentoAgencia  = $arrayParametro['descuentoAgencia'];
        $total             = $arrayParametro['total'];
        $costoAdverser     = $arrayParametro['costoAdverser'];
        $totalAdverser     = $arrayParametro['totalAdverser'];
        $liquidacion       = $arrayParametro['liquidacion'];
        $comisionPorcentaje  = $arrayParametro['comisionPorcentaje'];
        $totalComision       = $arrayParametro['totalComision'];
        $costoTotal          = $arrayParametro['costoTotal'];       
        
        $list = sfContext::getInstance()->getUser()->getAttribute($nombreSession,null);           
        $id   = 1;
        $repetido = false;
        if($list!=null)
        {
            $result   = array_reverse($list);
            $id       = $result[0]['id']+1;
        }
        if($repetido==false)
        {
            $newArray = array(
                "id"=>$id,
                "proveedorId"=>$proveedorId,
                "contratoId"=>$contratoId,
                "saldo"=>$saldo,
                "medioId"=>$medioId,
                "formato"=>$formato,
                "tipoCompraId"=>$tipoCompraId,
                "fechaInicio"=>$fechaInicio,
                "fechaFin"=>$fechaFin,
                "inventario"=>$inventario,
                "costoCmp"=>$costoCmp,
                "cpc"=>$cpc,
                "descuentoAgencia"=>$descuentoAgencia,
                "total"=>$total,
                "costoAdverser"=>$costoAdverser,
                "totalAdverser"=>$totalAdverser,
                "liquidacion"=>$liquidacion,
                "comisionPorcentaje"=>$comisionPorcentaje,
                "totalComision"=>$totalComision,
                "costoTotal"=>$costoTotal
                
                );
            $list[]   = $newArray;
        }         
            
        sfContext::getInstance()->getUser()->setAttribute($nombreSession,$list);
        
    }
    
    public function grabarDetalleFormatoPublicitario($nombreSession,$idPresupuesto)
    {
        $detalle  =  sfContext::getInstance()->getUser()->getAttribute($nombreSession,null);   
        if($detalle!=null)
        {  
            
             foreach($detalle as $row)
             {                          
                $detalle= new DetallePresupuesto();
                $detalle->setPresupuestoId($idPresupuesto);
                $detalle->setProveedorId($row['proveedorId']);
               // $detalle->setContratoId($row['contratoId']);
                $detalle->setSaldo($row['saldo']);
                $detalle->setMedioId($row['medioId']);
                $detalle->setFormato($row['formato']);
                $detalle->setTipoCompraId($row['tipoCompraId']);
                $detalle->setFechaInicio($row['fechaInicio']);
                $detalle->setFechaFin($row['fechaFin']);
                $detalle->setInventario($row['inventario']);
                $detalle->setCostocmp($row['costoCmp']);
                $detalle->setCpc($row['cpc']);
                $detalle->setDescuentoAgencia($row['descuentoAgencia']);
                $detalle->setTotal($row['total']);
                $detalle->setCostoAdverser($row['costoAdverser']);
                $detalle->setTotalAdverser($row['totalAdverser']);
                $detalle->setLiquidacion($row['liquidacion']);
                $detalle->setComisionPorcentaje($row['comisionPorcentaje']);
                $detalle->setTotalComision($row['totalComision']);
                $detalle->setCostoTotal($row['costoTotal']);
                $detalle->save();                
             }                       
             sfContext::getInstance()->getUser()->setAttribute($nombreSession, null);
        }
}

}
?>
